<script>
    function asyncFn() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve({ status: 200, msg: "登入成功" })
            }, 2000)
        })
    }
    function asyncFn2() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve({ status: 200, msg: "获取列表成功" })
            }, 3000)
        })
    }
    // async function getDate(){
    //     console.log(1);
    //     let data = await asyncFn()
    //     console.log(2);
    //     console.log(data);
    //     console.log(3);
    // }
    // getData()


    // // 预解析步骤 先执行 var a ，和var b 再进行复制 1 ，和 2
    // var a = 1;
    // var b = 2;

    // 代码遇到yield之后会暂停
    // function*  ====> generator函数写法
    function* getData(val) {
        console.log(1);
        const val1 = yield asyncFn()
        console.log(val1);
        const val2 = yield asyncFn2()
        console.log(val2);
    }
    getData()

    let it = getData(456) //返回generator迭代器（Iterator）
    //it.next() => 将指针指向第一个(yield)数据结构的成员
    it.next().value.then(res => { //第一次指向数据解构第一个成员
        // it.next().value 产出一个值
        console.log(res);
        it.next(res).value.then(res => {//第二次指向第二个成员
            console.log(res);
            it.next(res).value.then(res => { //。。。不断使用next方法。直到指向数据结构的结束位置
                console.log(res); 
            })
        })
    })
</script>